package com.example.sunsg.okhttptest.customview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

import com.example.sunsg.okhttptest.util.Util;


/**
 * @ClassName:CircleView
 * @Description: 分享的圆形进度条
 * @data 2015.5.18 pm 15:03
 * @author sunsg
 *
 */
public class CircleView extends View {
	/**内环颜色*/
	private int innerColor = 0x1affffff;
	/** 外环颜色*/
	private int outerColor = 0xffffffff;
	/** 设置padding值避免顶到头，显示不全 */
	private int padding;
	/** 控件宽 */
	private int height;
	/** 控件高 */
	private int width;
//	/** 图片的x坐标 */
//	private int bitMapX;//
//	/** 图片的y坐标 */
//	private int bitMapY;
//	/** 控制是否启动 */
//	private boolean run;//
//	/** 圆中心图片 */
//	private Bitmap centerBitmap;
	/** 内环pain */
	private Paint innerPaint;
	/** 内环RectF */
	private RectF innerCircle = new RectF();
	/** 外环pain */
	private Paint outerPaint;
	/** 外环RectF */
	private RectF outerCircle = new RectF();
	/** 圆环的宽默认10像素 */
	private int circleWidth = 10;
	/**  开始的角度*/
	private int startDegree =-90;
	/** 圆环进度 */
	private float progress;

	public CircleView(Context context) {
		super(context);
		init(context);
	}

	public CircleView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init(context);
	}

	public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		init(context);
	}

	private void init(Context context) {
		padding = Util.dp2px(context, 5);
		// 内环
		innerPaint = new Paint();
		innerPaint.setColor(innerColor);
		innerPaint.setAntiAlias(true);
		innerPaint.setStyle(Paint.Style.STROKE);
		innerPaint.setStrokeWidth(circleWidth);

		// 外环
		outerPaint = new Paint();
		outerPaint.setColor(outerColor);
		outerPaint.setAntiAlias(true);
		outerPaint.setStyle(Paint.Style.STROKE);
		outerPaint.setStrokeWidth(circleWidth);
		
		//默认中心图片
//		centerBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
	}

	/**
	 * 计算各种值
	 */
	private void calculate() {
		innerCircle = new RectF(padding, padding, width - padding, height - padding);
		outerCircle = new RectF(padding, padding, width - padding, height - padding);

//		if (centerBitmap != null) {
//			bitMapX = (width - centerBitmap.getWidth()) / 2;
//			bitMapY = (height - centerBitmap.getHeight()) / 2;
//		}
	}

	/**
	 * 设置宽和高
	 * 
	 * @param w
	 * @param h
	 */
	public void setWanH(int w, int h) {
		this.width = w;
		this.height = h;
		calculate();
	}
//	/**
//	 * 启动动画 在没有启动时
//	 */
//	public void startAnimal() {
//		if (!run) {
//			run = true;
//			new Thread(new Runnable() {
//
//				@Override
//				public void run() {
//					while (run) {
//						/** 休眠 一段时间*/
//						try {
//							Thread.sleep(100);
//						} catch (InterruptedException e) {
//							e.printStackTrace();
//						}
//						Logger.i("test", "progress = " + progress);
//						if (progress >= 360) {
//							// 圆环画完 停止画
//							run = false;
//						}
//						postInvalidate();
//					}
//				}
//			}).start();
//		}
//	}
	
//	/**
//	 * 停止动画 在圆环没画完之前 会有反应
//	 */
//	public void stopAnimal() {
//		run = false;
//	}
	
	/**
	 * 设置圆环的进度
	 * @param progress
	 */
	public void setProgress(float progress){
		this.progress = -progress;//逆时针
		postInvalidate();
	}
	
	/**
	 * 刷新进度
	 */
	public void flush(){
		postInvalidate();
	}
	
//	/**
//	 * 设置圆环中心的图片
//	 * @param bitmap
//	 */
//	public void setCentreBitmap(Bitmap bitmap) {
//		this.centerBitmap = bitmap;
//	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
		width = MeasureSpec.getSize(widthMeasureSpec);
		height = MeasureSpec.getSize(heightMeasureSpec);
		calculate();
//		startAnimal();
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		canvas.drawArc(innerCircle, 0, 360, false, innerPaint);
//		canvas.drawBitmap(centerBitmap, bitMapX, bitMapY, null);
		canvas.drawArc(outerCircle, startDegree, progress, false, outerPaint);
	}
	
	@Override
	protected void onDetachedFromWindow() {
		super.onDetachedFromWindow();
//		run = false;
	}

}
